﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using acessaDB;
using Frame;
using System.Data;
using System.Configuration;
using FirebirdSql.Data.FirebirdClient;
using Estrutura;


namespace Banco
{

    public class BD_Leitura
    {
        #region variaveis_globais

        acessaDB.conectaDBFireBird fireBird = new conectaDBFireBird();
        string conectionString = System.Configuration.ConfigurationManager.AppSettings["FireBirdConnectionLocal"];
        string usuario = string.Empty;

        #endregion

        #region construtor

        public BD_Leitura()
        {
            if (System.Configuration.ConfigurationManager.AppSettings["ambiente"] == "PROD")
                conectionString = System.Configuration.ConfigurationManager.AppSettings["FireBirdConnectionProd"];
        }
        public BD_Leitura(string usu_Login)
        {
            if (System.Configuration.ConfigurationManager.AppSettings["ambiente"] == "PROD")
                conectionString = System.Configuration.ConfigurationManager.AppSettings["FireBirdConnectionProd"];
            usuario = usu_Login;
        }

        #endregion

        #region metodos

        public DataSet _retorna_Leitura(
                                                string CTM_LEITURA_ID,
                                                string CTM_EVENTO_ID,
                                                string EQUIPAMENTO_ID,
                                                string CLT_DATA,
                                                string CLT_VALOR,
                                                string CLT_DELTA,
                                                string CLT_LEITURA_TOTAL_TIME,
                                                string CLT_DATA_INCLUSAO,
                                                string CTM_UNIDADE_MEDIDA_ID,
                                                string CLT_SEQ_LEITURA
                                                )
        {

            if (string.IsNullOrEmpty(CTM_LEITURA_ID)) CTM_LEITURA_ID = "'0'";
            if (string.IsNullOrEmpty(CTM_EVENTO_ID)) CTM_EVENTO_ID = "'0'";
            if (string.IsNullOrEmpty(EQUIPAMENTO_ID)) EQUIPAMENTO_ID = "'0'";
            if (string.IsNullOrEmpty(CLT_DATA)) CLT_DATA = Util.retonarAspas(Util.formataData(System.DateTime.Now.ToString()));
            if (string.IsNullOrEmpty(CLT_VALOR)) CLT_VALOR = "'0'";
            if (string.IsNullOrEmpty(CLT_DELTA)) CLT_DELTA = "'0'";
            if (string.IsNullOrEmpty(CLT_LEITURA_TOTAL_TIME)) CLT_LEITURA_TOTAL_TIME = "''";
            if (string.IsNullOrEmpty(CLT_DATA_INCLUSAO)) CLT_DATA_INCLUSAO = "''";
            if (string.IsNullOrEmpty(CTM_UNIDADE_MEDIDA_ID)) CTM_UNIDADE_MEDIDA_ID = "'0'";
            if (string.IsNullOrEmpty(CLT_SEQ_LEITURA)) CLT_SEQ_LEITURA = "'0'";

            string sql = "SELECT " +
                                  "CTM_LEITURA.CTM_LEITURA_ID, " +
                                  "CTM_LEITURA.CTM_EVENTO_ID, " +
                                  "CTM_LEITURA.EQUIPAMENTO_ID, " +
                                  "CTM_LEITURA.CLT_DATA, " +
                                  "CTM_LEITURA.CLT_VALOR, " +
                                  "CTM_LEITURA.CLT_DELTA, " +
                                  "CTM_LEITURA.CLT_LEITURA_TOTAL_TIME, " +
                                  "CTM_LEITURA.CLT_DATA_INCLUSAO, " +
                                  "CTM_LEITURA.CTM_UNIDADE_MEDIDA_ID, " +
                                  "CTM_LEITURA.CLT_SEQ_LEITURA " +
                            "FROM CTM_LEITURA " +
                            "WHERE " +
                            "      (CTM_LEITURA.CTM_LEITURA_ID                  = " + CTM_LEITURA_ID + "  OR " + CTM_LEITURA_ID + " = '0') AND " +
                            "      (CTM_LEITURA.CTM_EVENTO_ID                   = " + CTM_EVENTO_ID + "  OR " + CTM_EVENTO_ID + " = '0') AND " +
                            "      (CTM_LEITURA.EQUIPAMENTO_ID                  = " + EQUIPAMENTO_ID + "  OR " + EQUIPAMENTO_ID + " = '0') AND " +
                            "      (CTM_LEITURA.CLT_DATA                        = " + CLT_DATA + "  OR " + CLT_DATA + " = '') AND " +
                            "      (CTM_LEITURA.CLT_VALOR                       = " + CLT_VALOR + "  OR " + CLT_VALOR + " = '0') AND " +
                            "      (CTM_LEITURA.CLT_DELTA                       = " + CLT_DELTA + "  OR " + CLT_DELTA + " = '0') AND " +
                            "      (CTM_LEITURA.CLT_LEITURA_TOTAL_TIME          = " + CLT_LEITURA_TOTAL_TIME + "  OR " + CLT_LEITURA_TOTAL_TIME + " = '') AND " +
                            "      (CTM_LEITURA.CLT_DATA_INCLUSAO               = " + CLT_DATA_INCLUSAO + "  OR " + CLT_DATA_INCLUSAO + " = '') AND " +
                            "      (CTM_LEITURA.CTM_UNIDADE_MEDIDA_ID           = " + CTM_UNIDADE_MEDIDA_ID + "  OR " + CTM_UNIDADE_MEDIDA_ID + " = '0') AND " +
                            "      (CTM_LEITURA.CLT_SEQ_LEITURA                 = " + CLT_SEQ_LEITURA + "  OR " + CLT_SEQ_LEITURA + " = '0') ";

            DataSet dsRetorno = fireBird.retornaDataSet(sql, conectionString);
            return dsRetorno;

        }


        public List<ES_Leitura> _obter_Leitura(
                                                string CTM_LEITURA_ID,
                                                string CTM_EVENTO_ID,
                                                string EQUIPAMENTO_ID,
                                                string CLT_DATA,
                                                string CLT_VALOR,
                                                string CLT_DELTA,
                                                string CLT_LEITURA_TOTAL_TIME,
                                                string CLT_DATA_INCLUSAO,
                                                string CTM_UNIDADE_MEDIDA_ID,
                                                string CLT_SEQ_LEITURA
                                                )
        {

            if (string.IsNullOrEmpty(CTM_LEITURA_ID)) CTM_LEITURA_ID = "0";
            if (string.IsNullOrEmpty(CTM_EVENTO_ID)) CTM_EVENTO_ID = "0";
            if (string.IsNullOrEmpty(EQUIPAMENTO_ID)) EQUIPAMENTO_ID = "0";
            if (string.IsNullOrEmpty(CLT_DATA)) CLT_DATA = Util.retonarAspas(Util.formataData(System.DateTime.Now.ToString()));
            if (string.IsNullOrEmpty(CLT_VALOR)) CLT_VALOR = "0";
            if (string.IsNullOrEmpty(CLT_DELTA)) CLT_DELTA = "0";
            if (string.IsNullOrEmpty(CLT_LEITURA_TOTAL_TIME)) CLT_LEITURA_TOTAL_TIME = "''"; else CLT_LEITURA_TOTAL_TIME = Util.retonarAspas(CLT_LEITURA_TOTAL_TIME + " % ");
            if (string.IsNullOrEmpty(CLT_DATA_INCLUSAO)) CLT_DATA_INCLUSAO = "''"; else CLT_DATA_INCLUSAO = Util.retonarAspas(CLT_DATA_INCLUSAO + " % ");
            if (string.IsNullOrEmpty(CTM_UNIDADE_MEDIDA_ID)) CTM_UNIDADE_MEDIDA_ID = "0";
            if (string.IsNullOrEmpty(CLT_SEQ_LEITURA)) CLT_SEQ_LEITURA = "0";

            string sql = "SELECT " +
                                  "CTM_LEITURA.CTM_LEITURA_ID, " +
                                  "CTM_LEITURA.CTM_EVENTO_ID, " +
                                  "CTM_LEITURA.EQUIPAMENTO_ID, " +
                                  "CTM_LEITURA.CLT_DATA, " +
                                  "CTM_LEITURA.CLT_VALOR, " +
                                  "CTM_LEITURA.CLT_DELTA, " +
                                  "CTM_LEITURA.CLT_LEITURA_TOTAL_TIME, " +
                                  "CTM_LEITURA.CLT_DATA_INCLUSAO, " +
                                  "CTM_LEITURA.CTM_UNIDADE_MEDIDA_ID, " +
                                  "CTM_LEITURA.CLT_SEQ_LEITURA " +
                            "FROM CTM_LEITURA " +
                            "WHERE " +
                            "      (CTM_LEITURA.CTM_LEITURA_ID                  = " + CTM_LEITURA_ID + "  OR " + CTM_LEITURA_ID + " = '0') AND " +
                            "      (CTM_LEITURA.CTM_EVENTO_ID                   = " + CTM_EVENTO_ID + "  OR " + CTM_EVENTO_ID + " = '0') AND " +
                            "      (CTM_LEITURA.EQUIPAMENTO_ID                  = " + EQUIPAMENTO_ID + "  OR " + EQUIPAMENTO_ID + " = '0') AND " +
                            "      (CTM_LEITURA.CLT_DATA                        = " + CLT_DATA + "  OR " + CLT_DATA + " = '') AND " +
                            "      (CTM_LEITURA.CLT_VALOR                       = " + CLT_VALOR + "  OR " + CLT_VALOR + " = '0') AND " +
                            "      (CTM_LEITURA.CLT_DELTA                       = " + CLT_DELTA + "  OR " + CLT_DELTA + " = '0') AND " +
                            "      (CTM_LEITURA.CLT_LEITURA_TOTAL_TIME          = " + CLT_LEITURA_TOTAL_TIME + "  OR " + CLT_LEITURA_TOTAL_TIME + " = '') AND " +
                            "      (CTM_LEITURA.CLT_DATA_INCLUSAO               = " + CLT_DATA_INCLUSAO + "  OR " + CLT_DATA_INCLUSAO + " = '') AND " +
                            "      (CTM_LEITURA.CTM_UNIDADE_MEDIDA_ID           = " + CTM_UNIDADE_MEDIDA_ID + "  OR " + CTM_UNIDADE_MEDIDA_ID + " = '0') AND " +
                            "      (CTM_LEITURA.CLT_SEQ_LEITURA                 = " + CLT_SEQ_LEITURA + "  OR " + CLT_SEQ_LEITURA + " = '0') ";

            List<ES_Leitura> lista = new List<ES_Leitura>();
            FbConnection fbConexao = new FbConnection(conectionString);
            FbDataReader dr = fireBird.retornaDataReader(sql, conectionString, fbConexao);
            try
            {
                while (dr.Read())
                {
                    ES_Leitura item = new ES_Leitura();
                    item.CTM_LEITURA_ID = dr["CTM_LEITURA_ID"].ToString();
                    item.CTM_EVENTO_ID = dr["CTM_EVENTO_ID"].ToString();
                    item.EQUIPAMENTO_ID = dr["EQUIPAMENTO_ID"].ToString();
                    item.CLT_DATA = dr["CLT_DATA"].ToString();
                    item.CLT_VALOR = dr["CLT_VALOR"].ToString();
                    item.CLT_DELTA = dr["CLT_DELTA"].ToString();
                    item.CLT_LEITURA_TOTAL_TIME = (dr["CLT_LEITURA_TOTAL_TIME"].ToString() == "S")? true : false;
                    item.CLT_DATA_INCLUSAO = dr["CLT_DATA_INCLUSAO"].ToString();
                    item.CTM_UNIDADE_MEDIDA_ID = dr["CTM_UNIDADE_MEDIDA_ID"].ToString();
                    item.CLT_SEQ_LEITURA = dr["CLT_SEQ_LEITURA"].ToString();
                    lista.Add(item);

                }
                return lista;
            }
            finally
            {
                fireBird.fecharConexao(fbConexao);
            }
        }

        public List<ES_Leitura> _obter_Leitura_historico(string P_EQUIPAMENTO_ID, string P_CTM_UNIDADE_MEDIDA_ID)
        {

            if (string.IsNullOrEmpty(P_EQUIPAMENTO_ID)) P_EQUIPAMENTO_ID = "0";
            if (string.IsNullOrEmpty(P_CTM_UNIDADE_MEDIDA_ID)) P_CTM_UNIDADE_MEDIDA_ID = "0";
            
            string sql = "SELECT CTM_LEITURA_ID, "+
                         "       CTM_EVENTO_ID, "+
                         "       CLT_DATA, "+
                         "       CLT_VALOR_INI, "+
                         "       CLT_DELTA, "+
                         "       CLT_VALOR, "+
                         "       CLT_LEITURA_TOTAL_TIME, "+
                         "       CLT_DATA_INCLUSAO " +
                         "FROM FN_EQUIPAMENTO_LEITURA("+P_EQUIPAMENTO_ID+","+P_CTM_UNIDADE_MEDIDA_ID+") ";

            List<ES_Leitura> lista = new List<ES_Leitura>();
            FbConnection fbConexao = new FbConnection(conectionString);
            FbDataReader dr = fireBird.retornaDataReader(sql, conectionString, fbConexao);
            try
            {
                while (dr.Read())
                {
                    ES_Leitura item = new ES_Leitura();
                    item.CTM_LEITURA_ID = dr["CTM_LEITURA_ID"].ToString();
                    item.CTM_EVENTO_ID = dr["CTM_EVENTO_ID"].ToString();
                    item.CLT_DATA = dr["CLT_DATA"].ToString();
                    item.CLT_VALOR_INI = dr["CLT_VALOR_INI"].ToString();
                    item.CLT_DELTA = dr["CLT_DELTA"].ToString();
                    item.CLT_VALOR = dr["CLT_VALOR"].ToString();
                    item.CLT_LEITURA_TOTAL_TIME = (dr["CLT_LEITURA_TOTAL_TIME"].ToString() == "S") ? true : false;
                    item.CLT_DATA_INCLUSAO = dr["CLT_DATA_INCLUSAO"].ToString();
                    
                    lista.Add(item);

                }
                return lista;
            }
            finally
            {
                fireBird.fecharConexao(fbConexao);
            }
        }


        public DataSet _retorna_Leitura_historico(string P_EQUIPAMENTO_ID, string P_CTM_UNIDADE_MEDIDA_ID)
        {

            if (string.IsNullOrEmpty(P_EQUIPAMENTO_ID)) P_EQUIPAMENTO_ID = "0";
            if (string.IsNullOrEmpty(P_CTM_UNIDADE_MEDIDA_ID)) P_CTM_UNIDADE_MEDIDA_ID = "0";

            string sql = "SELECT CTM_LEITURA_ID, " +
                         "       CTM_EVENTO_ID, " +
                         "       CEO_DESCRICAO, "+
                         "       CLT_DATA, " +
                         "       CLT_VALOR_INI, " +
                         "       CLT_DELTA, " +
                         "       CLT_VALOR, " +
                         "       CLT_LEITURA_TOTAL_TIME, " +
                         "       CLT_DATA_INCLUSAO " +
                         "FROM FN_EQUIPAMENTO_LEITURA(" + P_EQUIPAMENTO_ID + "," + P_CTM_UNIDADE_MEDIDA_ID + ") ";

            DataSet dsRetorno = fireBird.retornaDataSet(sql, conectionString);
            return dsRetorno;
        }
        
        public ES_Leitura _obter_Leitura_by_id(
                                                string CTM_LEITURA_ID
                                                )
        {

            if (string.IsNullOrEmpty(CTM_LEITURA_ID)) CTM_LEITURA_ID = "'0'";

            string sql = "SELECT " +
                                  "CTM_LEITURA.CTM_LEITURA_ID, " +
                                  "CTM_LEITURA.CTM_EVENTO_ID, " +
                                  "CTM_LEITURA.EQUIPAMENTO_ID, " +
                                  "CTM_LEITURA.CLT_DATA, " +
                                  "CTM_LEITURA.CLT_VALOR, " +
                                  "CTM_LEITURA.CLT_DELTA, " +
                                  "CTM_LEITURA.CLT_LEITURA_TOTAL_TIME, " +
                                  "CTM_LEITURA.CLT_DATA_INCLUSAO, " +
                                  "CTM_LEITURA.CTM_UNIDADE_MEDIDA_ID, " +
                                  "CTM_LEITURA.CLT_SEQ_LEITURA " +
                            "FROM CTM_LEITURA " +
                            "WHERE " +
                            "      (CTM_LEITURA.CTM_LEITURA_ID = " + CTM_LEITURA_ID + "  OR " + CTM_LEITURA_ID + " = '0') ";

            ES_Leitura item = new ES_Leitura();
            FbConnection fbConexao = new FbConnection(conectionString);
            FbDataReader dr = fireBird.retornaDataReader(sql, conectionString, fbConexao);
            try
            {
                while (dr.Read())
                {
                    item.CTM_LEITURA_ID = dr["CTM_LEITURA_ID"].ToString();
                    item.CTM_EVENTO_ID = dr["CTM_EVENTO_ID"].ToString();
                    item.EQUIPAMENTO_ID = dr["EQUIPAMENTO_ID"].ToString();
                    item.CLT_DATA = dr["CLT_DATA"].ToString();
                    item.CLT_VALOR = dr["CLT_VALOR"].ToString();
                    item.CLT_DELTA = dr["CLT_DELTA"].ToString();
                    item.CLT_LEITURA_TOTAL_TIME = (dr["CLT_LEITURA_TOTAL_TIME"].ToString() == "S") ? true : false;
                    item.CLT_DATA_INCLUSAO = dr["CLT_DATA_INCLUSAO"].ToString();
                    item.CTM_UNIDADE_MEDIDA_ID = dr["CTM_UNIDADE_MEDIDA_ID"].ToString();
                    item.CLT_SEQ_LEITURA = dr["CLT_SEQ_LEITURA"].ToString();

                }
                return item;
            }
            finally
            {
                fireBird.fecharConexao(fbConexao);
            }
        }


        public void _inserir_Leitura(
                                                string CTM_LEITURA_ID,
                                                string CTM_EVENTO_ID,
                                                string EQUIPAMENTO_ID,
                                                string CLT_DATA,
                                                string CLT_VALOR,
                                                string CLT_DELTA,
                                                string CLT_LEITURA_TOTAL_TIME,
                                                string CLT_DATA_INCLUSAO,
                                                string CTM_UNIDADE_MEDIDA_ID,
                                                string CLT_SEQ_LEITURA
                                                )
        {

            string sql = " INSERT INTO CTM_LEITURA " +
                         "      ( " +
                         "          CTM_EVENTO_ID                  , " +
                         "          EQUIPAMENTO_ID                 , " +
                         "          CLT_DATA                       , " +
                         "          CLT_VALOR                      , " +
                         "          CLT_DELTA                      , " +
                         "          CLT_LEITURA_TOTAL_TIME         , " +
                         "          CLT_DATA_INCLUSAO              , " +
                         "          CTM_UNIDADE_MEDIDA_ID          , " +
                         "          CLT_SEQ_LEITURA                  " +
                 "      )" +
                 "  VALUES " +
                 "      ( " +
                              Util.retonarAspas(CTM_EVENTO_ID, true) + ", " +
                              Util.retonarAspas(EQUIPAMENTO_ID, true) + ", " +
                              Util.retonarAspas(Util.formataData(CLT_DATA), true) + ", " +
                              Util.retonarAspas(CLT_VALOR, true) + ", " +
                              Util.retonarAspas(CLT_DELTA, true) + ", " +
                              Util.retonarAspas(CLT_LEITURA_TOTAL_TIME, true) + ", " +
                              Util.retonarAspas(CLT_DATA_INCLUSAO, true) + ", " +
                              Util.retonarAspas(CTM_UNIDADE_MEDIDA_ID, true) + ", " +
                              Util.retonarAspas(CLT_SEQ_LEITURA, true) +
                 "      )";
            try
            {
                fireBird._ExecutarComandoRetornandoID(sql, conectionString, false, usuario);
            }
            catch
            { }
        }



        public void _atualizar_Leitura(
                                                string CTM_LEITURA_ID,
                                                string CTM_EVENTO_ID,
                                                string EQUIPAMENTO_ID,
                                                string CLT_DATA,
                                                string CLT_VALOR,
                                                string CLT_DELTA,
                                                string CLT_LEITURA_TOTAL_TIME,
                                                string CLT_DATA_INCLUSAO,
                                                string CTM_UNIDADE_MEDIDA_ID,
                                                string CLT_SEQ_LEITURA
                                                )
        {

            string sql = " UPDATE CTM_LEITURA SET " +
                         "      CTM_EVENTO_ID                   = " + Util.retonarAspas(CTM_EVENTO_ID, true) + ", " +
                         "      EQUIPAMENTO_ID                  = " + Util.retonarAspas(EQUIPAMENTO_ID, true) + ", " +
                         "      CLT_DATA                        = " + Util.retonarAspas(Util.formataData(CLT_DATA), true) + ", " +
                         "      CLT_VALOR                       = " + Util.retonarAspas(CLT_VALOR, true) + ", " +
                         "      CLT_DELTA                       = " + Util.retonarAspas(CLT_DELTA, true) + ", " +
                         "      CLT_LEITURA_TOTAL_TIME          = " + Util.retonarAspas(CLT_LEITURA_TOTAL_TIME, true) + ", " +
                         "      CLT_DATA_INCLUSAO               = " + Util.retonarAspas(CLT_DATA_INCLUSAO, true) + ", " +
                         "      CTM_UNIDADE_MEDIDA_ID           = " + Util.retonarAspas(CTM_UNIDADE_MEDIDA_ID, true) + ", " +
                         "      CLT_SEQ_LEITURA                 = " + Util.retonarAspas(CLT_SEQ_LEITURA, true) +
                         " WHERE CTM_LEITURA_ID =  " + CTM_LEITURA_ID;
            try
            {
                fireBird._ExecutarComandoRetornandoID(sql, conectionString, false, usuario);
            }
            catch
            { }
        }



        public void _excluir_Leitura(string CTM_LEITURA_ID)
        {
            string sql = "DELETE FROM CTM_LEITURA WHERE CTM_LEITURA_ID = " + CTM_LEITURA_ID;
            try
            {
                fireBird._ExecutarComandoRetornandoID(sql, conectionString, false, usuario);
            }
            catch
            { }
        }



        #endregion
    }
}
